<%@page import="util.PointFactory"%>
<%@page import="java.util.HashSet"%>
<%@page import="java.util.Set"%>
<%@page import="java.sql.Time"%>
<%@page import="com.vividsolutions.jts.geom.Point"%>
<%@page import="controller.UsuarioController"%>
<%@page import="view.UsuarioBean"%>
<%@page import="controller.EstiloPontoGastronomicoController"%>
<%@page import="view.EstiloPontoGastronomicoBean"%>
<%@page import="controller.TipoPontoGastronomicoController"%>
<%@page import="view.TipoPontoGastronomicoBean"%>
<%@page import="java.util.List"%>
<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <link rel="shortcut icon" href="/img/favicon.png"/>
        <title>GastroMap - Cadastrar Usuários</title>
        <%@include file="/_include.html"%>
        <script src="/js/cadastrarUsuario.js"></script>
    </head>
    <body>
        <!-- Redirecionamento caso não esteja logado -->
        <%
           if (session.getAttribute("usuario") != null) {
              response.sendRedirect("/index.jsp");
           }
        %>

        <!-- Barra de navegação -->
        <%@include file="/_navbar.jsp" %>

        <div class="container-fluid">
            <div class="container">
                <!-- Título e botão de listagem -->
                <div class="row">
                    <div class="span12">
                        <h1>Cadastrar Usuário</h1>
                    </div>                
                </div>
                <hr/>
                <!-- Entrada do endereço -->
                <div class="row">
                    <div class="span12">
                        <label>
                            <strong>Digite um endereço ou clique no mapa para definir sua localização padrão.</strong>
                        </label>
                        <input class="input-xxlarge" id="addressInput" name="addressInput" placeholder="Rua ou avenida, número, cidade, estado ou CEP"/>
                        <button id="markButton" class="btn btn-success">
                            <i class="icon-flag icon-white"></i>
                            Marcar ponto
                        </button>
                    </div>
                </div>
                <!-- Mapa -->
                <div class="row-fluid">
                    <div class="span10">
                        <div id="googleMap">
                        </div>
                    </div>
                </div>
                <hr/>
                <!-- Formulário -->
                <div class="row-fluid">
                    <h4>Preencha as demais informações sobre o usuário.</h4>
                    <span class="help-block">* Campos obrigatórios</span>
                    <br/>
                    <div class="span12">
                        <form method="post" name="form" accept-charset="ISO-8859-1" class="form-horizontal">
                            <fieldset>                        
                                <input type="hidden" id="latitude" name="latitude"/>
                                <input type="hidden" id="longitude" name="longitude"/>
                                <div class="control-group">
                                    <label class="control-label">
                                        Nome *                              
                                    </label>
                                    <div class="controls">
                                        <input type="text" name="nome" required="">                                    
                                    </div>
                                </div>
                                <div class="control-group">
                                    <label class="control-label">
                                        E-mail *                              
                                    </label>
                                    <div class="controls">
                                        <input type="email" name="email" required="">                                    
                                    </div>
                                </div>
                                <div id="divSenha1" class="control-group">
                                    <label class="control-label">
                                        Senha *                                
                                    </label>
                                    <div class="controls">
                                        <input type="password" name="senha" id="senha1" required="">
                                        <div class="help-inline">
                                            <span id="checarSenha1"></span>
                                        </div>
                                    </div>
                                </div>
                                <div id="divSenha2" class="control-group">
                                    <label class="control-label">
                                        Repita a senha *                              
                                    </label>
                                    <div class="controls">
                                        <input type="password" name="senha2" id="senha2" required="">
                                        <div class="help-inline">
                                            <span  id="checarSenha2"></span>
                                        </div>
                                    </div>
                                </div>
                                <div class="control-group  ">
                                    <label class="control-label">
                                        Tipos preferidos de estabelecimentos *
                                    </label>
                                    <div class="controls">
                                        <select id="selectTipo" name="tiposPreferidos" multiple="" size="10">                                 
                                            <%
                                               List<TipoPontoGastronomicoBean> listaTipos = new TipoPontoGastronomicoController().recuperar();
                                               for (int i = 0; i < listaTipos.size(); i++) {
                                                  out.println("<option value='" + i + "'>" + listaTipos.get(i).getTipo() + "</option>");
                                               }
                                            %>
                                        </select>
                                    </div>
                                </div>
                                <div class="control-group">
                                    <label class="control-label">
                                        Especialidades ou estilos preferidos *                              
                                    </label>
                                    <div class="controls">
                                        <select id="selectEstilo" name="estilosPreferidos" multiple="" size="10">
                                            <%
                                               List<EstiloPontoGastronomicoBean> listaEstilos = new EstiloPontoGastronomicoController().recuperar();
                                               for (int i = 0; i < listaEstilos.size(); i++) {
                                                  out.println("<option value='" + i + "'>" + listaEstilos.get(i).getEstilo() + "</option>");
                                               }
                                            %>
                                        </select>                                  
                                    </div>
                                </div>
                                <div class="control-group">
                                    <label class="control-label">
                                        Distância máxima que você está disposto a percorrer
                                    </label>
                                    <div class="controls">
                                        <input class="input-mini" name="regiaoAbrangencia" type="number" min="0"/>
                                        metros                                                          
                                    </div>
                                </div>
                                <div class="control-group">
                                    <label class="control-label">
                                        Gasto médio por ocasião
                                    </label>
                                    <div class="controls">
                                        <input class="input-mini" name="gastoMedio" type="number" min="0"/> 
                                        ,00
                                    </div>
                                </div>
                            </fieldset>
                            <div class="form-actions">
                                <button type="reset" class="btn btn-danger">
                                    <i class="icon-remove icon-white"></i>
                                    Limpar
                                </button>
                                <button type="submit" class="btn btn-primary" id="cadastrarUsuario">
                                    <i class="icon-ok icon-white"></i>
                                    Cadastrar
                                </button>                          
                            </div>
                        </form>
                    </div>
                </div>
            </div>
            <!-- Rodapé -->
            <%@include file="/_footer.jsp" %>
        </div>  

        <%
           Point ponto = null;
           TipoPontoGastronomicoBean tipo = null;
           Set<TipoPontoGastronomicoBean> tipos = new HashSet<TipoPontoGastronomicoBean>();
           Set<EstiloPontoGastronomicoBean> estilos = new HashSet<EstiloPontoGastronomicoBean>();

           if (request.getParameter("nome") != null) {
              String latitudeString = request.getParameter("latitude");
              String longitudeString = request.getParameter("longitude");
              String[] tiposString = request.getParameterValues("tiposPreferidos");
              String[] estilosString = request.getParameterValues("estilosPreferidos");

              ponto = PointFactory.create(Double.parseDouble(latitudeString), Double.parseDouble(longitudeString));

              if (tiposString != null) {
                 for (int i = 0; i < tiposString.length; i++) {
                    int index = Integer.parseInt(tiposString[i]);
                    tipos.add(listaTipos.get(index));
                 }
              }

              if (estilosString != null) {
                 for (int i = 0; i < estilosString.length; i++) {
                    int index = Integer.parseInt(estilosString[i]);
                    estilos.add(listaEstilos.get(index));
                 }
              }
           }
        %>

        <jsp:useBean id="usuario" class="view.UsuarioBean">   
            <jsp:setProperty name="usuario" property="geolocalizacaoPadrao" value="<%=ponto%>"/>
            <jsp:setProperty name="usuario" property="email"/>
            <jsp:setProperty name="usuario" property="senha"/>                        
            <jsp:setProperty name="usuario" property="nome"/>
            <jsp:setProperty name="usuario" property="regiaoAbrangencia"/>
            <jsp:setProperty name="usuario" property="gastoMedio"/>
            <jsp:setProperty name="usuario" property="tiposPreferidos" value="<%=tipos%>"/>
            <jsp:setProperty name="usuario" property="estilosPreferidos" value="<%=estilos%>"/>
            <jsp:setProperty name="usuario" property="ehAdministrador" value="<%=false%>"/>
        </jsp:useBean>   

        <%
           if (usuario.getNome() != null) {
              if (new UsuarioController().salvar(usuario)) {
                 out.println("<script>alert('Cadastro realizado com sucesso!');</script>");
                 int id = new UsuarioController().maxId();
                 usuario.setId(id);
                 usuario.setSenha("");
                 session.setAttribute("usuario", usuario);
                 out.println("<script>location.href = '/index.jsp';</script>");
              } else {
                 out.println("<script>alert('Ocorreu um erro e o cadastro falhou!');</script>");
              }
           }
        %>

    </body>
</html>